package com.heatup.apt.management.task;

import java.io.File;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.heatup.apt.management.util.ManageConfigPropertiesUtil;

/**
 * 定时清理服务目录下的文件
 * 
 * @author Earvin
 *
 */
@Component
@EnableScheduling
public class TempDirCleanTask {
	private Logger log = LoggerFactory.getLogger(TempDirCleanTask.class);

	/**
	 * java定时器：每天定时删除临时目录下的所有文件 字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时
	 * 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7 或者
	 * SUN-SAT , - * ? / L C # 年（可选） 留空, 1970-2099 , - * / - 区间 通配符 ? 你不想设置那个字段
	 */
	@Scheduled(cron = "0 0 3 * * ?")
	public void CleanDir() {
		log.info("================ TempDirCleanTask CleanDir is run ================");
		try {
			String downloadPath = ManageConfigPropertiesUtil.getString("uploadImagDir");
			File tempDir = new File(downloadPath);
			if (tempDir.exists()) {
				remove(tempDir);
			}
		} catch (Exception e) {
			e.printStackTrace();
			log.error("==>删除服务目录下的文件任务出现异常：" + e.getMessage());
		}
		log.info("================ TempDirCleanTask CleanDir is end ================");
	}

	private void remove(File f) {
		if (f.isDirectory()) {
			File[] s = f.listFiles();
			if (s != null) {
				for (File i : s)
					remove(i);
			}
		}
		f.delete();
	}

}
